![]() |
![]() |
![]() |
|
Adding Logic Logic is the cornerstone of every game, no matter what kind of game it is. Logic is responsible for everything that happens in the game. In this sense, logic is the code to control when you kill an alien, when the alien kills you, when you win the game and when you lose the game. As this tutorial does not attempt to write a complete game, we will add the logic to restart when the player dies and the logic to move the aliens around the world and allow the player to shoot them. |

|
We can give our aliens the appearance of intelligence by letting them move towards the player when they are looking in the right direction, and the player is close enough: rem TUT8A rem If enemy "facing player" and "on similar height" and "close", zoom in if abs(viewa#-obja#)<10.0 and abs(dy#)<5.0 and dist#<30.0 if object angle z(ene)<>2 then play sound EnemygunSnd rotate object ene,0,viewa#,2 set object speed ene,2 else set object speed ene,1 endifWhen the player gets too close to the enemy, the player must die. As we wish the game to continue, we shall reset the players position and in order to avoid the enemy constantly attacking the player, we remove the alien from the game: rem TUT8B rem If enemy gets too close to player, player dies if dist#<2.0 play sound DieSnd for x=0 to 100 point camera object position x(ene), object position y(ene)+(x/20.0), object position z(ene) sync next x restart=1 killenemy=1 endifWhen the bullet gets too close to an enemy, both the enemy and the bullet die. The bullet will of course live again when the player fires the gun, but the enemy alas will not be so fortunate this game: rem TUT8C rem If enemy and bullet in same space, enemy dies if bullet>0 if object collision(BulletObj,ene)>0 play sound EnemydieSnd play object ene,26,26+50 set object speed ene,1 bulletimpact=1 endif endifHaving all the enemies in front of you does not make for a very good game, so adding logic to space them out and give them collision so they don"t move through walls provides good enemy logic for the game: rem TUT8D rem Place enemies throughout world and set BSP collision for them aliensleft=0 restore EnemyPosData for ene=EneObj to EneObj+4 read ex#,ey#,ez# position object ene,ex#,ey#,ez# set bsp object collision 3+(ene-EneObj),ene,0.75,0 yrotate object ene,180 : fix object pivot ene inc aliensleft next eneAs the above code uses the RESTORE and READ commands, we must provide some DATA statements containing coordinates to place the enemies throughout the world. These coordinates were calculated by walking around with the player and writing down the coordinate of the player: rem TUT8E rem Enemy position data within level EnemyPosData: data -9.27,9.98,-2.78 data -16.54,-0.22,19.18 data 2.0,9.0,25.0 data -2.0,-9.0,25.0 data 2,4.0,10.0 CLICK HERE TO GO TO THE MAIN MENU |